<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
 *
 *
 */
class fotos extends CI_Model  {
	/**
	 * Constructor
	 * @access protected
	 */
	function _construct()
	{
		// Call the Model constructor
		parent::_construct();
	}
	
	function getfolders()
	{
		$result=$this->db->query("Select id,name from type order by id");
		$responce=array();
		foreach($result->result() as $row)
		{
			$responce[$row->id]['name']=$row->name;
			$query="select id,name from service where idType=".$row->id." and iduser=".$this->session->userdata('idUser');
			
			$result2=$this->db->query($query);
			foreach($result2->result() as $row2)
			{
				$responce[$row->id]['service'][$row2->id]=$row2->name;
				if($row->id==1)
				{
					$query='select name from service where id=(select `desc` from listoptions where idoption=13 and idservice='.$row2->id.')';
					$rcity=$this->db->query($query);
					if($rcity->num_rows()>0)
					{
						$responce[$row->id]['service'][$row2->id].=' / '.$rcity->row()->name;
					}
				}
				
				
			}
		}
		//print_r($responce);
		return json_encode($responce);
	}
	function getfotos($id)
	{
		$query="select idfoto from listfotos where idservice=".$id;
		$result=$this->db->query($query);
		$responce=array();
		$i=0;
		foreach($result->result() as $row)
		{
			$query="select id,url,name from fotos where id=".$row->idfoto;
			$res=$this->db->query($query);
			$responce[$i]['id']=$res->row()->id;
			$responce[$i]['name']=$res->row()->name;
			$responce[$i]['url']="/images/photo/".$res->row()->url;
			
			$i++;
		}
		return json_encode($responce);
	}
	function savefoto($id)
	{
		$imgDir = "images/photo/"; // каталог для хранения изображений
		@mkdir($imgDir, 0777); // создаем каталог, если его еще нет
		$foto=$_FILES['Filedata'];
		$tmp = $foto['tmp_name'];  //это просто для удобства
		$f=false;
		if (@file_exists($foto['tmp_name'])) 
		{
			$info = @getimagesize($tmp); //берем информацию о файле
			if (preg_match('{image/(.*)}is', $info['mime'], $p)) 
			{
				//убеждаемся что файл есть ни что иное как изображение
				$newwidth = 150; //в данную переменную мы помещаем желаемую ширину файла
				//$newname = $imgDir . basename($data['name']); //имя файла оставляем прежним
				$r=explode('.',basename($foto['name']));
				$name=Date('ymdGs').".".$r[count(explode('.',basename($foto['name'])))-1];
				//$this->log(basename($foto['name']));
				$newname = $imgDir .$name;
				$this->log($newname);
				//осторожно! если файл с таким именем существует, то он будет перезаписан загружаемым
				if (move_uploaded_file($_FILES['Filedata']['tmp_name'], $newname)) 
					{
						$messages[] = "Файл успешно загружен ".$name;
						$f=true;
						if ($info[0] > $newwidth)
						{
							if($this->resize($newname, $newwidth, $newname))
							{
								$messages[] = "Рисунок был успешно загружен и преобразован ".$name;
								$f=true;
							}
							else
							{
								$messages[] = "Произошла ошибка при уменьшении файла ".$foto['name'];
							}
						}
					}
					else 
					{
						$messages[] = "Ошибка загрузки файла! ".$foto['name'];
					}
				}
			
			else 
			{
				$messages[] = "Ошибка! Попытка загрузить файл недопустимого формата. ".$foto['name'];
			}
		}
		else 
		{
			$messages[] = "Файл не был загружен.";
		}
		foreach($messages as $mess)
		{
			$this->log($mess);
		}
		if($f)
		{
			$query="insert into fotos (`url`,name) values ('".$name."','')";
			$this->log($query);
			$this->db->query($query);
			$query="select id from fotos where url='".$name."'";
			$res=$this->db->query($query);
			$query="insert into listfotos (`idfoto`,idservice) values ('".$res->row()->id."','".$id."')";
			$this->db->query($query);
		}
	}
	function deletefotos($id)
	{
		$url=$this->db->query("Select url from fotos where id=".$id." limit 1");
		
		$query='delete from fotos where id='.$id;
		$this->db->query($query);
		
		$query="delete from listfotos where idfoto=".$id;
		$this->db->query($query);
		
		$imgDir = "images/photo/";
		unlink($imgDir.$url->row()->url);
		return json_encode(array('state'=>'true'));
	}
	function editfotos($id,$name)
	{
		$query="update fotos set name='".$name."' where id=".$id;
		$this->db->query($query);
	}
	private function resize($photo_src, $width, $name){
		$parametr = getimagesize($photo_src);
		list($width_orig, $height_orig) = getimagesize($photo_src);
		$this->log("w=".$width_orig." h=".$height_orig);
		if($width_orig>$height_orig)
		{
			$ratio_orig = $width_orig/$height_orig;
			$new_width = $width;
			$new_height = $width / $ratio_orig;
		}else
		{
			$ratio_orig = $height_orig / $width_orig;
			$new_width = $width / $ratio_orig;
			$new_height = $width;
		}
		$this->log("nw=".$new_width." nh=".$new_height);
		$newpic = imagecreatetruecolor($new_width, $new_height);
		switch ( $parametr[2] ) {
			case 1: $image = imagecreatefromgif($photo_src);
			break;
			case 2: $image = imagecreatefromjpeg($photo_src);
			break;
			case 3: $image = imagecreatefrompng($photo_src);
			break;
		}
		imagecopyresampled($newpic, $image, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig);
		imagejpeg($newpic, $name, 100);
		return true;
	}
}